/*
 * @Author: LiZhiJian
 * @Description: 舵机控制相关操作 
 * @Date: 2025-10-28 14:46:39
 * @LastEditTime: 2025-10-28 17:17:09
 * @Email: LiZhiJian8552@163.com
 */
#include "servo.h"
#include "pwm.h"
#include "stm32f10x_tim.h"
/**
  * 函    数：舵机初始化
  * 参    数：无
  * 返 回 值：无
  * 角度为0，对应的脉冲宽度应该为500US
  * 角度为180，对应的脉冲宽度应该为2500us
  */
void Servo_Init(void){
    // 初始化PWM相关操作
    PWM_Init();
}
void Servo_SetAngle1(float Angle){
    PWM_SetCompare1(Angle/180*2000+500);
}
void Servo_SetAngle2(float Angle){
    PWM_SetCompare2(Angle/180*2000+500);
}
void Servo_SetAngle3(float Angle){
    PWM_SetCompare3(Angle/180*2000+500);
}
void Servo_SetAngle4(float Angle){
    PWM_SetCompare4(Angle/180*2000+500);
}
/**
  * 函    数：舵机读取角度
  * 参    数：无
  * 返 回 值：舵机角度，范围：0~180
  */
uint8_t Servo_GetAngle1(void){
    // TIM_GetCapture1返回定时器TIM3的捕获/比较寄存器1（CCR1）的当前值
    return (TIM_GetCapture1(TIM3)-500)*180/2000;
}
uint8_t Servo_GetAngle2(void){
    return (TIM_GetCapture2(TIM3)-500)*180/2000;
}
uint8_t Servo_GetAngle3(void){
    return (TIM_GetCapture3(TIM3)-500)*180/2000;
}
uint8_t Servo_GetAngle4(void){
    return (TIM_GetCapture4(TIM3)-500)*180/2000;
}
